#define MAC_ADDRESS_LENGTH 6
typedef unsigned char MAC_address[MAC_ADDRESS_LENGTH];
struct EthernetFrame {
    MAC_address dest_mac;
    MAC_address src_mac;
    unsigned short type;
    unsigned char data[1500];
    unsigned int crc;
};
MAC_address this_mac_address = {0x00, 0x11, 0x22, 0x33, 0x44, 0x55};

int mac_address_match(const struct EthernetFrame *frame) {
    if (memcmp(frame->dest_mac, this_mac_address, MAC_ADDRESS_LENGTH) == 0)
        return 1;
    if ((frame->dest_mac[0] & 0x01) == 1) 
        return 1;
    unsigned char broadcast_mac[MAC_ADDRESS_LENGTH] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
    if (memcmp(frame->dest_mac, broadcast_mac, MAC_ADDRESS_LENGTH) == 0)
        return 1;
    return 0;
}
